



import pandas as pd
import matplotlib.pyplot as plt


def plot_histograms(df, column_names):
    """
    绘制指定列的直方图，每个直方图将数据分为20份。

    参数:
    df: pd.DataFrame
        数据框
    column_names: list of str
        列名列表
    """
    num_columns = len(column_names)

    # 设置图形的尺寸
    fig, axes = plt.subplots(num_columns, 1, figsize=(10, 5 * num_columns))

    if num_columns == 1:
        axes = [axes]  # 保证axes是一个可迭代对象，即使只有一个子图

    for i, column in enumerate(column_names):
        ax = axes[i]
        df[column].plot(kind='hist', bins=20, ax=ax, title=f'Histogram of {column}')
        ax.set_xlabel(column)
        ax.set_ylabel('Frequency')

    plt.tight_layout()
    plt.show()


# 示例使用
# 创建一个示例数据框
data = {
    'col1': [1, 2, 2, 3, 3, 3, 4, 4, 4, 4],
    'col2': [5, 6, 6, 7, 7, 7, 8, 8, 8, 8],
    'col3': [9, 10, 10, 11, 11, 11, 12, 12, 12, 12]
}
df = pd.DataFrame(data)

# 绘制直方图
plot_histograms(df, ['col1', 'col2', 'col3'])
